package com.atguigu.ssyx.common.config.minio.config;

import com.atguigu.ssyx.common.config.minio.properties.MinioProperties;
import io.minio.MinioClient;
import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author 杨林
 * @create 2023-07-27 9:12 星期四
 * description:
 */
@Configuration
@Slf4j
public class MinioConfiguration {

//    @Autowired
//    MinioProperties minioProperties;
    
    /**
     * 提供获取Minio客户端的方法
     * @return
     */
    @Bean   //SpringBoot给容器中放一个组件，所有的参数就是从容器中获取 即可以将容器中的组件当作参数传递
    public MinioClient minioClient(MinioProperties minioProperties) throws Exception {
         MinioClient minioClient = new MinioClient(minioProperties.getEndpoint(), 
                minioProperties.getAccessKey(), 
                minioProperties.getSecretKey());

         //判断是否有指定的桶，如果有就直接上传，如果没有就创建指定的桶
        boolean isExist = minioClient.bucketExists(minioProperties.getBucketName());
        if (isExist){
            log.info("桶已经存在，可以直接上传");
        }else {
            //3、创建一个名为 "ssyx-oss" 的存储桶
//            minioClient.makeBucket("ssyx-oss");
//            minioClient.makeBucket(bucketName);
            minioClient.makeBucket(minioProperties.getBucketName());
        }
        return minioClient;
    }
    
}
